#include <stdio.h>
#include <math.h>
int main()
{
	// ������

	// 3-1
	//	 int n=10;
	//	 float r=0.07,p;
	//	 p=pow(1+r,n);//pow(a,b)��a��b�η�
	//	 printf("%f",p);

	// 3-3
	//	 int d=300000,p=6000;
	//	 double r=0.01,m,a,b;
	//	 a=log(p/(p-d*r));
	//	 b=log(1+r);
	//	 printf("%5.1f",a/b);

	// 3-6
	//	  char c1,c2,c3,c4,c5;
	//	  scanf("%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5);
	//	  c1+=4;
	//	  c2+=4;
	//	  c3+=4;
	//	  c4+=4;
	//	  c5+=4;
	//	  printf("%c%c%c%c%c",c1,c2,c3,c4,c5);
	// putchar(c1);	  putchar(c2); //.......

	// 4-5输入一个小于1000的整数输出其平方根，不是整数则输出其整数部分
	// int a;
	// int b;
	// printf("请输入一个数字：");
	// while (true)
	// {
	// 	scanf("%d", &a);
	// 	if (a > 1000)
	// 	{
	// 		printf("请重新输入:");
	// 	}
	// 	else
	// 	{
	// 		for(int i=0;i<1000;i++){
	// 			if(i*i==a){
	// 				printf("它的平方跟是%d", i);
	// 			}
	// 			else if (i * i < a && (i + 1) * (i + 1)>a)
	// 			{
	// 				printf("它的平方跟整数的近似值是%d", i+1);
	// 			}
	// 		}

	// 		break;
	// 	}
	// }
	// 4-9
	// int a;
	// int ge, shi, bai, qian, wan;
	// int b, c, d, e, t;
	// printf("请输入一个数字：");
	// scanf("%d", &a);
	// if (a < 10)
	// {
	// 	printf("%d是个位数\n", a);
	// 	printf("它的个位数是：%d\n", a);
	// }

	// else if (a < 100 && a > 9)
	// {
	// 	ge = a % 10;
	// 	shi = a / 10;
	// 	b = ge * 10 + shi;
	// 	printf("%d是个两位数\n", a);
	// 	printf("它的个位数是:%d\n", ge);
	// 	printf("它的十位数是:%d\n", shi);
	// 	printf("反转后的数是:%d\n", b);
	// }
	// else if (a > 99 && a < 1000)
	// {
	// 	printf("%d是个三位数", a);
	// }
	// else if (a > 999 & a < 10000)
	// {
	// 	printf("%d是个四位数", a);
	// }
	// else if (a > 9999 && a < 100000)
	// {
	// 	printf("%d是个五位数", a);
	// }
	// else
	// {
	// 	printf("要不起");
	// }

	// 5-3两个整数的最大公约数最小公倍数
	// int m;
	// printf("请输入两个数:\nm=");
	// scanf("%d", &m);
	// int n;
	// printf("n=");
	// scanf("%d", &n);
	// for (int i = 2;; i++)
	// {
	// 	if (m % i == 0 && n % i == 0)
	// 	{
	// 		printf("最大公约数为:%d\n", i);
	// 		for(int j=i;;j++){
	// 			if (j%m== 0 && j % n == 0){
	// 				printf("最小公倍数为:%d", j);
	// 				break;
	// 			}
	// 		}

	// 		break;
	// 	}
	// 	else
	// 	{
	// 		printf("最大公约数为:1\n最小公倍数为:%d", m * n);
	// 		break;
	// 	}
	// }
	// 5-5

	// int a; /*a表示数字*/
	// int n; /*b表示位数*/
	// int t,sum,i=0;
	// printf("请输入数字:\na=");
	// scanf("%d", &a);
	// printf("请输入位数:\nn=");
	// scanf("%d", &n);
	// while (i < n)
	// {
	// 	t = t * 10 + a;
	// 	sum =sum+ t;
	// 	i++;
	// }

	// printf("Sn=%d (n=%d)\n", sum, n);

	// 5-6
	/*阶乘*/
	// int s = 1, n, he = 0;
	// scanf("%d", &n);
	// for (int i = 1; i <= n; i++)
	// {
	// 	s = s * i;
	// 	he = he + s;
	// }
	// printf("%d", he);

	// 5-7
	//  int k, he = 0, m;
	//  scanf("%d", &k);
	//  for (int i = 1; i <= k; i++)
	//  {
	//  	m = i * i;
	//  	he = he + m;
	//  }
	//  printf("%d", he);

	// 5-9完数一个数如果恰好等于它的因子之和，这个数就称为“完数”。
	// 例如，6的因子为1, 2, 3，
	// 而6=1+2+3，因此6是“完数”。编程序找出1000之内的所有完数，
	// 并按下面格式输出其因子：6 its factors are 1, 2, 3

	// for (int j = 1000; j > 1; j--)
	// {
	// 	int s = 0;
	// 	int i = 1;
	// 	for (; i != j && i < 1000; i++)
	// 	{

	// 		if (j % i == 0)
	// 		{
	// 			s = s + i;
	// 		}
	// 	}
	// 	if (s == j)
	// 	{
	// 		printf("完数%d它的因数是:", i);
	// 		for (int i = 1; i < j; i++)
	// 		{
	// 			if (j % i == 0)
	// 			{
	// 				printf("%d ", i);
	// 			}
	// 					}
	// 		printf("\n");
	// 	}
	// }

	// 5-11一个球从xm高度自由落下，每次落地后反弹回原高度的一半，
	// 再落下，再反弹。求它在第n次落地时共经过多少米，第n次反弹多高。
	// x=100,n=10
	// float x = 100;
	// double n = 10;
	// float s = 0;
	// for (int i = 1; i <= n; i++)
	// {
	// 	x = x / 2;
	// }
	// printf("它最后的反弹是%lf米\n", x);
	// for (int i = 10; i > 0; i--)
	// {
	// 	x = x * 2;
	// 	s = s + x;
	// }
	// printf("总共落地是%lf米\n", s);

	// 5-12猴子吃桃

	// int day;
	// printf("请输入天数:");
	// scanf("%d", &day);
	// int peach = 1;
	// int x;
	// for (; day > 1; day--)
	// {
	// 	peach = 2 * peach + 2;

	// 	if (day == 2)
	// 	{
	// 		printf("第一天吃了%d个桃子", peach);
	// 	}
	// }

	// 5-12迭代法求平方根
	// float x;
	// int a;
	// printf("你要求的数:");
	// scanf("%d", &a);
	// for (int i = 0;;i++ )
	// {

	// }

	// printf("它的平方根:%d", x);

	// 数组
	// int a[3][4] = {{1, 2, 3, 4}, {6, 5, 4, 3}};
	// printf("%d", a[0][0]);

	// 将一个二维数组行和列交换
	//  int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
	//  int b[3][2];
	//  for (int j = 0; j< 3; j++)
	//  {
	//  	for (int i = 0; i < 2; i++)
	//  	{
	//  		b[j][i] = a[i][j];
	//  		printf("%d", b[j][i]);
	//  	}
	//  	printf("\n");
	//  }
	/*输出一个菱形图案*/
	// char a[5][5] = {
	// 	{' ', ' ', '*', ' ', ' '},
	// 	{' ', '*', ' ', '*', ' '},
	// 	{'*', ' ', ' ', ' ', '*'},
	// 	{' ', '*', ' ', '*', ' '},
	// 	{' ', ' ', '*', ' ', ' '}};
	// for (int i = 0; i < 5; i++)
	// {
	// 	for (int j = 0; j < 5; j++)
	// 	{
	// 		printf("%c", a[i][j]);
	// 	}
	// 	printf("\n");
	// }

	// 输入一段英文，中间用空格隔开，判断其中有多少单词
	
	printf("输入一段英文，中间用空格隔开\n");
	char a[9999];
	char c;
	gets(a);
	int num=0,i;
	int word=0;
	
	for (i = 0; (c = a[i]) != '\0'; i++)
	{
		if (c ==' ')
		{
			word=0;
		}
		else if(word==0){
		word=1;
		num++;
	}
	}
printf("一共有%d个单词",num);
	return 0;
}
